#include<bits/stdc++.h>
#define sd(n) scanf("%d",&n) 
#define sld(n) scanf("%lld",&n)
#define pd(n) printf("%d", (n))
#define pld(n) printf("%lld", n)
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
#define fi first
#define se second
const int N=1e5;
const int maxn=1e6;
typedef long long int ll;
using namespace std;
//----------------------------------------------------------------------------//
ll a[N];
void solve()
{
	int n;
	sd(n);
	for(int i=0;i<n;i++) sld(a[i]);

	ll g[2]={0,0};
	for(int i=0;i<n;i++)
	{
		g[i&1]=gcd(g[i&1],a[i]);//判断奇偶,判断奇偶位置的最大公约数
	}
	for(int i=0;i<2;i++)//遍历奇和偶的最大公约数,如果都不行则为无解
	{
		bool judge=true;
		for(int j=i^1;j<n;j+=2)
		{
			if(a[j]%g[i]==0)
			{
				judge=false;
				break;
			}
		}

		if(judge)
		{
			cout<<g[i]<<'\n';
			return;
		}
	}
	cout<<0;
	puts("");


}

int main()
{
	int T;
	sd(T);
	while (T--)
	{
		solve();
	}
	return 0;
}